Programming Constructs for Nonprocedural Languages∗
نویسنده
چکیده
In this paper we show how a pure denotative (nonprocedural) language based on the λ-calculus can be provided with purely denotative analogs of the various constructs—such as while loops, blocks, case statements and the like—of conventional imperative structured programming languages. They can be simulated quite adequately using only two simple tools: phrases, which are compound expressions not unlike blocks, and pronouns, special variables not unlike keywords between which certain relationships are ‘understood’ to hold.
منابع مشابه
Generating Data Flow Programs from Nonprocedural Specifications
Data flow is a mode of parallel computation in which parallelism in a program can be exploited at the fine grained as well as macro level. A data flow computer executes a data dependency graph rather than the program counter controlled sequence of instructions executed by conventional machines. Nonprocedural languages appear to be especially appropriate high level languages for data flow comput...
متن کاملThe Effects of Using a Nonprocedural Computer Language on Programmer Productivity
An empirical experiment was conducted in order to compare a third generation, procedural anguage (COBOL) with a fourth generation, nonprocedural language (Focus) in terms of programmer productivity and program efficiency. Six applications were developed in two languages by different programmers who had been matched according to their level of expertise. The results of the experiment showed that...
متن کاملViscid, a vi-like screen editor written in Lucid∗
In this paper we describe a full screen editor program written entirely in Lucid, a functional dataflow language. Our goal was to verify that pure nonprocedural languages can be used to program ‘realistic’ applications, including ones involving interactive I/O. The editor (which we call viscid) is similar to the vi editor of Berkeley UNIX(TM). Viscid is much simpler than vi but does handle basi...
متن کاملProgramming Languages for Reusable Software Components Programming Languages for Reusable Software Components
Programming languages ooer a variety of constructs to support code reuse. For example , functional languages provide function constructs for encapsulating expressions to be used in multiple contexts. Similarly, object-oriented languages provide class (or class-like) constructs for encapsulating sets of deenitions that are easily adapted for new programs. Despite the variety and abundance of suc...
متن کاملFormal Language Recognition with the Java Type Checker
This paper is a theoretical study of a practical problem: the automatic generation of Java Fluent APIs from their specification. We explain why the problem’s core lies with the expressive power of Java generics. Our main result is that automatic generation is possible whenever the specification is an instance of the set of deterministic context-free languages, a set which contains most “practic...
متن کامل